package com.dingding.dao.userorderdao;

import java.math.BigDecimal;
import java.util.List;

import com.dingding.bean.databean.push.PushAutomaticCancelOrder;
import com.dingding.bean.databean.push.PushCancelOrder;
import com.dingding.bean.databean.push.PushConfirmArrival;
import com.dingding.bean.databean.push.PushPassengerPay;
import com.dingding.bean.databean.request.ReqGetLastUserOrder;
import com.dingding.bean.databean.request.ReqGetNearbyOrderList;
import com.dingding.bean.databean.request.ReqGetNearbyUserList;
import com.dingding.bean.databean.request.ReqGetUserOrder;
import com.dingding.bean.databean.request.ReqPublishAboutCar;
import com.dingding.bean.databean.response.DataResponse;
import com.dingding.bean.databean.response.NearbyOrderList;
import com.dingding.bean.databean.response.ResCompetitiveOrder;
import com.dingding.bean.databean.response.ResGetOrderInfo;
import com.dingding.common.core.beans.Userordert;
import com.dingding.dao.basedao.IBaseDao;

public interface IUserOrderTDao extends IBaseDao<Userordert> {

	/**
	 * 
	 * @Title: convertBean
	 * @Description:发布订单将客户端请求bean转换成
	 * @param reqPublishAboutCar
	 *            客户端数据请求bean userordert 数据保存bean
	 * @author cheshaowei
	 * @throws
	 * 
	 */
	public void convertBean(ReqPublishAboutCar reqPublishAboutCar, Userordert userordert);

	/**
	 * @Title: getPassengerPayPushInfo 
	 * @Description: 乘客支付-获取给司机发送短信和推送的消息 
	 * @param driverId 司机Id
	 * @param passengerId 乘客Id
	 * @return PushPassengerPay    返回类型 
	 * @throws
	 */
	public PushPassengerPay getPassengerPayPushInfo(String passengerId, String driverId);

	/**
	 * @Title: getConfirmArrival 
	 * @Description: 乘客确认到达-获取给司机发送短信和推送的消息 
	 * @param passengerId 乘客Id
	 * @param driverId 司机Id
	 * @return PushConfirmArrival    返回类型 
	 * @throws
	 */
	public PushConfirmArrival getConfirmArrival(String passengerId, String driverId);

	/**
	 * @Title: getPushCancelOrderInfo 
	 * @Description: 用户取消订单-获取给司机发送短信和推送的消息
	 * @param passengerId	乘客Id
	 * @param driverId 司机Id
	 * @return PushCancelOrder    返回类型 
	 * @throws
	 */
	public PushCancelOrder getPushCancelOrderInfo(String passengerId, String driverId);

	/**
	 * @Title: latelyOrder 
	 * @Description: 查看用户最近订单
	 * @param reqGetLastUserOrder 客户端请求参数
	 * @author yhq
	 * @return Object    返回类型 
	 * @throws
	 */
	public Object latelyOrder(DataResponse dataResponse, ReqGetLastUserOrder reqGetLastUserOrder);

	/**
	 * @Title: getUserOrder 
	 * @Description: 获取我的订单
	 * @param reqGetUserOrder 客户端请求参数
	 * @param dataResponse 响应Bean
	 * @author yhq
	 * @return Object    返回类型 
	 * @throws
	 */
	public Object getUserOrder(DataResponse dataResponse, ReqGetUserOrder reqGetUserOrder);

	/**
	 * @Title: getNearbyUserLists 
	 * @Description: 获取附近订单列表
	 * @param reqGetNearbyUserList 客户端请求参数
	 * @return List<NearbyOrderList>    返回类型 
	 * @throws
	 */
	public List<NearbyOrderList> getNearbyUserLists(ReqGetNearbyUserList reqGetNearbyUserList);

	/**
	 * @Title: getNearbyOrderLists 
	 * @Description: 获取附近订单列表(V1.9.0新接口)
	 * @param reqGetNearbyOrderList 客户端请求参数
	 * @return List<NearbyOrderList>    返回类型 
	 * @throws
	 */
	public List<NearbyOrderList> getNearbyOrderLists(ReqGetNearbyOrderList reqGetNearbyOrderList);

	/**
	 * @Title: getResCompetitiveOrderDetail 
	 * @Description: 乘客抢单响应给乘客车主信息
	 * @author lijinchao
	 * @return ResCompetitiveOrder 抢单响应
	 * @throws
	 */
	public ResCompetitiveOrder getResCompetitiveOrderDetail(ResCompetitiveOrder resCompetitiveOrder, String uid);

	/**
	 * @Title: getCancelOrders 
	 * @Description: 获取待取消订单列表
	 * @return List<PushAutomaticCancelOrder>    返回类型 
	 * @throws
	 */
	public List<PushAutomaticCancelOrder> getCancelOrders();

	/**
	 * @Title: getConfirmOrders 
	 * @Description: 获取待自动完成的订单列表
	 * @return List<PushAutomaticCancelOrder>    返回类型 
	 * @throws
	 */
	public List<PushAutomaticCancelOrder> getConfirmOrders();

	/**
	 * @Title: getOrderInfo
	 * @Description: 根据订单Id获取订单信息
	 * @param oid 订单Id
	 * @author yuHaiQing
	 * @return ResGetOrderInfo    返回类型
	 */
	public ResGetOrderInfo getOrderInfo(String oid);

	/**
	 * 设置订单为已评价（乘客对车主评价）
	 * @Title: setalreadyEvaluated 
	 * @param orderId 订单ID
	 * @return  boolean true 成功 false 失败
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean setOrderAlreadyEvaluated(String orderId);

	/**
	 * 
	 * 订单完成后，如果用户参加活动有可能赠送积分。
	 * 如果赠送积分需要将获赠积分数更新到订单表中，当前接口由此产生
	 * 
	 * @Title: updateCurrentOrderReceiveIntegral 
	 * @param: receiveIntegral 赠送积分
	 * @para: orderId 订单ID
	 * @return   boolean true 成功 false 失败
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean updateCurrentOrderReceiveIntegral(BigDecimal receiveIntegral, String orderId);

}
